#include <stdio.h>

// 杨氏矩阵
// 感觉和动态规划有点像
// 杨氏矩阵里面的值每行和每列都是递增的
// 所以可以根据此特点来查找特定的值

int Search_matrix (int matrix [] [3] , int row , int col , int number) // 这里四个参数都为传值,将矩阵以及行列和要查找的数字传进函数里面
{

    int x = col - 1 ; // 设立x坐标初始在行最后一个元素

    int y = 0 ; // 设立y坐标在矩阵最开始的列

    int val = matrix [y] [x] ; // x,y坐标的值的代表

    while (1) // 此处故意设立死循环,因为当里面有判断语句设立会退出函数,所以不用担心
    {

        if (val == number) // 当矩阵里面x,y坐标的值符合查找的数字时,函数返回1
        {

            return 1 ;

        }

        else if (val > number && y < (row - 1)) // 如果情况满足查找的数字比矩阵数字小,且当前查找的矩阵坐标没有越界,执行
        {

            val = matrix [++y] [x] ; // 向矩阵的下一行寻找

        }

        else if (val < number && x > 0) // 同上,不过是查找的数字大于矩阵的时候执行
        {

            val = matrix [y] [--x] ; // 向矩阵的前一列寻找

        }

        else
        {

            return 0 ;

        }

    }
    
    
}

int main ()
{

    int matrix [] [3] = {{1 , 2 , 3} , {4 , 5 , 6} , {7 , 8 , 9} } ;

    int row = 3 ;

    int col = 3 ;

    int number = 0 ;

    scanf ("%d" , &number) ;

    int search_return = Search_matrix (matrix , row , col , number) ;

    if (search_return)
    {

        printf ("该杨氏矩阵有这一个数字") ;

    }

    else
    {

        printf ("该杨氏矩阵没有这一个数字") ;

    }

    return 0 ;

}